home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 March - Disc 2 / Macworld (1999-03) (Disk 2).dmg / Scripting Tools / Main Event Scripter $199 / CGI and AppleScript < prev    next >
Text File  |  1995-09-26  |  5KB  |  99 lines

  1. CGI and AppleScript
  2.  
  3. [The following is excerpted from the article "CGI and AppleScript," Dr. Dobb's Sourcebook, Nov./Dec. 1995.]
  4.  
  5. On the Macintosh, CGI applications can be written using AppleScript, the built-in scripting language of the Macintosh operating system. AppleScript was designed as a high-level, dynamic language to provide a systemwide scripting mechanism, always available, which can reach out to existing applications.
  6.  
  7. By far, AppleScript’s most powerful capability is being able to communicate with and control other applications, including well over 100 off-the-shelf scriptable applications. This allows you to quickly put together scenarios, simple or complex. Within an AppleScript CGI, you can process data or instructions entered into a form. You can initiate a database search, assembly of text, produce charts or graphics, all driven from user choices. In addition, there’s sending e-mail, assembling new HTML for use in creating subsequent Web pages, and dealing with runtime errors.
  8.  
  9. AppleScript works its magic through application-specific vocabularies, which are housed within scriptable applications. A vocabulary extends the language to include new terms representing actions and objects specific to the particular application. Together with AppleScript’s built-in terms, you write scripts by putting together sentences, often grammatically correct.
  10.  
  11. A sample AppleScript CGI
  12.  
  13. Suppose you maintain a regularly-updated database of information in a database that includes a table of numeric values, and you want to provide, on demand to your Web users, the table in the form of a chart. This example uses three familiar applications: FileMaker Pro (to hold the data), DeltaGraph Pro (to make a chart of the data), and Clip2Gif (to store the chart in a GIF file). You can use redirection (“Location” in the reply header) to point to the Web server to the GIF file.  The following is intended as inspiration, not as a working sample.
  14.  
  15. property crlf : (ASCII character 13) & (ASCII character 10)
  16. property reply_header : "HTTP/1.0 302 FOUND" & crlf & ¬
  17.     "Server: WebSTAR/1.0 ID/ACGI" & crlf & ¬
  18.     "Location: http://www.your.site/home.html" & crlf & ¬
  19.     "URI: http://www.your.site/home.html" & crlf & crlf
  20. property error_header : "HTTP/1.0 200 OK" & crlf & ¬
  21.     "Server: WebSTAR/1.0 ID/ACGI" & crlf & ¬
  22.     "MIME-Version: 1.0" & crlf & "Content-type: text/html" & crlf & crlf
  23.  
  24. -- This is the CGI Handler
  25.  
  26. on «event WWWΩsdoc» path_args ¬
  27.     given «class post»:post_args, «class meth»:method, «class addr»:client_address
  28.     
  29.     try
  30.         
  31.         -- Put the body of your CGI here.
  32.         
  33.         -- interpret CGI arguments
  34.         
  35.         -- Here you would obtain the user’s choices from the CGI arguments.
  36.         -- I leave this as an exercise for the reader.
  37.         
  38.         -- retrieve data from database
  39.         
  40.         tell application "FileMaker Pro"
  41.             Open alias "Macintosh HD:Databases folder:Web DataBase"
  42.             set numRecs to Count of Record in Document 1
  43.             -- make tab-delimited data for Deltagraph
  44.             set dataString to "Month" & tab & "Amount" & return
  45.             repeat with i from 1 to numRecs
  46.                 copy dataString & Cell "month" of Record i & tab & ¬
  47.                     Cell "amount" of Record i & return to dataString
  48.             end repeat
  49.         end tell
  50.         
  51.         -- create the desired chart
  52.         
  53.         tell application "Deltagraph Pro"
  54.             Data dataString
  55.             Plot Options Text Font "Palatino" Text Size 12 Colorstyle "blue"
  56.             Set Axis Lengths for X 100 for Y 100
  57.             Output PICT
  58.             set dataChart to Plot chart chartType
  59.         end tell
  60.         
  61.         -- make the GIF file for the redirect
  62.         
  63.         tell application "clip2gif"
  64.             save dataChart as GIF in file "Macintosh HD:home.html"
  65.         end tell
  66.         
  67.         -- return the reply data to the server and exit the CGI handler
  68.         
  69.         return reply_header -- reply and exit
  70.         
  71.         -- If you get an error, the error handling mechanism will drop you in here:
  72.         
  73.     on error errNum number errMsg
  74.         
  75.         -- Create a page of HTML text to return.
  76.         
  77.         set return_page to error_header ¬
  78.             & ¬
  79.             "<HTML><HEAD><TITLE>Error Page</TITLE></HEAD>" & "<BODY><H1>Error Encountered!</H1>" & return ¬
  80.             & "An error was encountered while trying to run this script." & return
  81.         
  82.         set return_page to return_page ¬
  83.             & "<H3>Error Message</H3>" & return & errMsg & return ¬
  84.             & "<H3>Error Number</H3>" & return & errNum & return ¬
  85.             & "<H3>Date</H3>" & return & (current date) & return
  86.         
  87.         set return_page to return_page & ¬
  88.             "<HR>Please notify the webmaster at " & ¬
  89.             "<A HREF=\"mailto:webmaster@your.site.com\">mailto:webmaster@your.site.com</A>" & " of this error." & "</BODY></HTML>"
  90.         
  91.         -- Return the error page created and exit the handler.
  92.         
  93.         return return_page
  94.         
  95.     end try
  96.     
  97. end «event WWWΩsdoc» -- end of handler
  98.  
  99.